package ofertas;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

import java.util.ArrayList;
import java.util.List;

import org.junit.Before;
import org.junit.Test;

import productosYPresentaciones.Producto;

/**
 * Test de la clase general de oferta que define todos los 
 * test comunes de cualquier oferta.
 * @author Octavio.
 */

public abstract class OfertaTest {

	protected Producto producto1 ,producto2 ,	producto3;
	protected List<Producto> lfake;
	protected Oferta oferta;
	protected float porc;
	
	@Before
	public void setUp() throws Exception {		
		producto1 = mock( Producto.class );
		producto2 = mock( Producto.class );
		producto3 = mock( Producto.class );
		
		when(producto1.precioActual()).thenReturn(10.0f);
		when(producto2.precioActual()).thenReturn(10.0f);
		when(producto3.precioActual()).thenReturn(10.0f);
		
		lfake = new ArrayList<Producto>();
		lfake.add(producto1);
		lfake.add(producto2);
		
		porc = 0.1f;
	}
	
	
	@Test
	public void testgetPorcentajeDescuento(){
		assertEquals( 1f - porc, oferta.getPorcentajeDescuento(), 0.02 );
	}
	
	@Test
	public void testsetPorcentajeDescuento(){
		oferta.setPorcentajeDescuento(0.5f);
		assertEquals( 0.5f , oferta.getPorcentajeDescuento() ,0.02 );
	}
	
	@Test
	public abstract void testPrecioOferta();
	
	@Test
	public abstract void testGetListaProductos();
	
	@Test
	public abstract void testGetProductos();
	
	@Test
	public abstract void testHayOfertasConProductos();
}
